很多人應該是認識 Python 這個程式語言,卻不知道 python 這個字在字典裡具有「巨蟒」之意,不過現在你知道了,長知識了吧!
Python 這個名稱實際上是由當初的開發者 Guido van Rossum,也就是那個本來應該寫 PEP 20 第二十條的荷蘭大叔所命名,根據大多數的網路資料,Guido 之所以會使用 Python 這個語言的命名,純粹只是因為自己很喜歡一個英國喜劇團體——「Monty Python's Flying Circus 蒙提・派森的飛行馬戲團」。
然而,說這個 Python 跟蟒蛇一點關聯倒也不完全正確,畢竟蒙提・派森的飛行馬戲團又被稱作「巨蟒劇團、蒙提巨蟒」,這樣說起來倒也多少有點關係,所以當下次有人要糾正你說——「Python 跟蟒蛇一點關係也沒有」的時候,便拿出這段來說嘴了。
另一個重點來了,Python 到底是讀「派森」還是「派桑」一直是學習這個語言時,每個人都有自己的見解,不過既然這個語言是由 Guido 所命名,那想必跟著他念一定最正確吧!
昨天我們講到「如何創建一個新串列」、「替換串列中的元素」,並且試圖從 List 取出我們想要的元素。不過在繼續今天的復健之路之前,我先來說說在我自己程式語言的路上,一些小小的學習心法。
在電腦程式語言中,CRUD 增刪查改是一種常見的動作行為,代表的是 Create 增加、Read 查詢、Update 修改、Delete 刪除,而這個字詞最早是由 James Martin 在他所撰寫的 Managing the Data-base Environment 書中所提到。
仔細回想我們生活中使用的任何一款 app,基本上都可以做到新增 Create 一筆新的資料、查詢 Read 舊有的資料、更新 Update 舊有的資料、刪除 Delete 舊有的資料,這些功能看似簡單,卻建構是不可缺少的要素。
所以我們在學習資料型態時,也可以先認識並記住如何進行資料型態。
所以除了創建新串列、替換串列中的元素,我們也可以增加更多的元素到串列中,一如小叮噹的四次元口袋,我們有新的道具就要拼命地往裡頭塞,反正空間很大嘛!
我們可以使用串列中的 append()
方法,將指定的元素新增到現有串列的最尾端。
fruits = ['banana', 'orange', 'mango', 'lemon']
fruits.append('apple')
print(fruits) # ['banana', 'orange', 'mango', 'lemon', 'apple']
fruits.append('lime') # ['banana', 'orange', 'mango', 'lemon', 'apple', 'lime']
print(fruits)
也可以透過 insert()
方法,將元素插入至指定索引值的位置,這樣就不一定要放在串列的最尾端了。不過要注意的是,append()
可以一次添加多個元素,但 insert()
一次卻只能插入一個元素。
fruits = ['banana', 'orange', 'mango', 'lemon']
fruits.insert(2, 'apple')
print(fruits) # ['banana', 'orange', 'apple', 'mango', 'lemon']
fruits.insert(3, 'lime')
print(fruits) # ['banana', 'orange', 'apple', 'lime', 'mango', 'lemon']
我想,我應該不用再用四次元口袋做比喻了吧?(想偷懶了。)
Python 有蠻多種可以刪除元素的方法,不過所代表的意義有點不太相同:
使用 remove()
方法:可以「一次移除一個」指定的元素。
fruits =, ['banana', 'orange', 'mango', 'lemon', 'banana']
fruits.remove('banana')
print(fruits) # ['orange', 'mango', 'lemon', 'banana']
fruits.remove('lemon')
print(fruits) # ['orange', 'mango', 'banana']
使用 pop()
方法:可以取出指定索引值的元素,或是在沒有指定任何索引值的狀況下,移除最後串列中的最後一個元素。(有發現嗎?我這裡使用的動詞是「取出」,而不是「移除」,因為使用 pop()
方法取出的元素,可以當作值,被賦值在其他的變數中)
fruits = ['banana', 'orange', 'mango', 'lemon']
fruits.pop()
print(fruits) # ['banana', 'orange', 'mango']
only_banana = fruits.pop(0)
print(fruits) # ['orange', 'mango']
print(only_banana) # 'banana'
使用 clear()
方法:清空整個串列。
fruits = ['banana', 'orange', 'mango', 'lemon']
fruits.clear()
print(fruits) # []
如果把「刪除元素」比喻成「扔掉小叮噹不要的道具」,那「刪除串列」就是「連小叮噹的四次元口袋都不要了」,要注要的是即便用 clear()
方法清空了串列,空串列依舊是一個存在的串列,但刪除串列是整個「燒毀」,讓這個串列消失在記憶體之中。
(是不是哪裡怪怪的?)
我們可以使用關鍵字 del
移除串列中指定的元素,也可以使用這個關鍵字徹底刪除這個串列(注意:這是無法復原的!)。
fruits = ['banana', 'orange', 'mango', 'lemon', 'kiwi', 'lime']
del fruits[0]
print(fruits) # ['orange', 'mango', 'lemon', 'kiwi', 'lime']
del fruits[1]
print(fruits) # ['orange', 'lemon', 'kiwi', 'lime']
del fruits[1:3]
print(fruits) # ['orange', 'lime']
del fruits
print(fruits) # 出現 NameError: name 'fruits' is not defined,因為 fruits 已經不見了
有時候我們可能需要複製一個現有的串列,然後對新複製的串列進行其他的操作,透過 copy()
方法,我們可以像按下 ctrl + c
與 ctrl + v
複製出一個一模一樣的串列,之後如果我們對複製的串列做什麼事,本來的串列都不會受到影響。
這幾天開始感覺到一些壓力了,生活中總有些突如其來的忙碌,在沒有多餘存檔的前提下,每一天真的跟跑三鐵一樣,在指定的時間需要完成指定的文章,一點點偷懶都可能導致棄賽,而現在才稍稍接近整個賽期的三分之一,只能不停地信心喊話——「無論如何,我會完成的。」